﻿using System.Data;
using Dapper;
using WebMvc.Models;

namespace WebMvc.Dao
{
    public class SalaDao : BaseDao<Sala>, IBaseDao<Sala>
    {
        public SalaDao(IDbConnection conn) : base(conn)
        {
        }

        protected override string SelectCmd
        {
            get { return "SELECT Id, IdOpenMeetings, Nombre, Comentario, Tipo, " +
                         "TipoExterno, CantidadParticipantes, EsPublica, " +
                         "ParaCitarse, ParaDemo, DuracionDemo, SalaModerada " +
                         "FROM dbo.Sala"; }
        }

        protected override string DeleteCmd
        {
            get { return "DELETE FROM dbo.Sala"; }
        }

        public bool Create(Sala obj)
        {
            const string cmd = @"INSERT INTO dbo.Sala (Nombre, Comentario, Tipo, TipoExterno, CantidadParticipantes, EsPublica, ParaCitarse, ParaDemo, DuracionDemo, SalaModerada) " +
                               "VALUES (@nombre, @comentario, @tipo, @tipoExterno, @cantPart, @esPublica, @paraCitarse, @paraDemo, @duracionDemo, @salaModerada)";

            var result = Connection.Execute(cmd,
                new { @nombre = obj.Nombre,
                      @comentario = obj.Comentario,
                      @tipo = (int)obj.Tipo,
                      @tipoExterno = obj.TipoExterno,
                      @cantPart = obj.CantidadParticipantes,
                      @esPublica = obj.EsPublica,
                      @paraCitarse = obj.ParaCitarse,
                      @paraDemo = obj.ParaDemo,
                      @duracionDemo = obj.DuracionDemo,
                      @salaModerada = obj.SalaModerada});

            return result == 1;
        }

        public bool Update(Sala obj)
        {
            const string cmd = @"UPDATE dbo.Sala SET " +
                                "Nombre = @nombre, Comentario = @comentario, Tipo = @tipo, TipoExterno = @tipoExterno, " +
                                "CantidadParticipantes = @cantPart, EsPublica = @esPublica, ParaCitarse = @paraCitarse, " +
                                "ParaDemo = @paraDemo, DuracionDemo = @duracionDemo, SalaModerada = @salaModerada, IdOpenMeetings = @idOm " +
                                "WHERE Id = @id";

            var result = Connection.Execute(cmd,
                new
                {
                    @nombre = obj.Nombre,
                    @comentario = obj.Comentario,
                    @tipo = (int)obj.Tipo,
                    @tipoExterno = obj.TipoExterno,
                    @cantPart = obj.CantidadParticipantes,
                    @esPublica = obj.EsPublica,
                    @paraCitarse = obj.ParaCitarse,
                    @paraDemo = obj.ParaDemo,
                    @duracionDemo = obj.DuracionDemo,
                    @salaModerada = obj.SalaModerada,
                    @idOm = obj.IdOpenMeetings,
                    @id = obj.Id
                });

            return result == 1;
        }
    }
}